____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Bitmap-Index
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Ein Bitmap-Index ist ein Datenbankindex, der dazu dient, mehrdimensionale Daten effizient zu indizieren. Auf Grund seiner Eigenschaften findet der Bitmap-Index vor allem bei Data Warehouses Einsatz.
Die Bezeichnung rΓΌhrt daher, dass der Bitmap-Index ein oder mehrere Attribute in Form eines Bitmusters (engl. Bitmap) speichert. Er ist vor allem sinnvoll einsetzbar fΓΌr die Indizierung von Tabellenspalten mit einer geringen KardinalitΓ€t (Anzahl der in dieser Spalte vorhandenen unterschiedlichen Werte). Das ist genau der Bereich, in dem ein konventioneller Index, realisiert durch einen B-Baum, keine Steigerung der Zugriffsperformance bringt.
Contents
β’ Beispiel
β’ Funktionsweise
β’ Literatur
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Beispiel
Ein einfaches Beispiel: in einen Index einer Personendatenbank werden die Attribute Geschlecht (zwei mΓΆgliche Werte, KardinalitΓ€t = 2) und Familienstand (KardinalitΓ€t = 3) eingetragen. Die Indextabelle kΓΆnnte so aussehen:
| Name | mΓ€nnlich | weiblich | ledig | verheiratet | geschieden |
|---|---|---|---|---|---|
| Anne | 0 | 1 | 0 | 1 | 0 |
| Emil | 1 | 0 | 0 | 0 | 1 |
| Fritz | 1 | 0 | 0 | 1 | 0 |
| Hans | 1 | 0 | 0 | 1 | 0 |
| Willi | 1 | 0 | 1 | 0 | 0 |
Funktionsweise
Wie bei allen Datenbankindizes existiert von jedem dieser EintrΓ€ge ein Verweis auf einen (externen) Datenbankeintrag.
Das Durchsuchen der (vorzugsweise intern gespeicherten) Indextabelle geschieht ΓΌber einfache binΓ€re Operationen, im Beispiel ΓΌber Und-VerknΓΌpfung mit einer Suchmaske. Sucht man in dem Beispiel nach Personen, die mΓ€nnlich und verheiratet sind, so ist die Suchmaske 10 010 (die Verweise der Treffer fΓΌhren zu Fritz und Hans).
Ausnutzung der binΓ€ren Operationen auf Prozessorebene bietet einen Geschwindigkeitsvorteil bei Vergleichsoperationen. Durch diese ReprΓ€sentation wird Rechenaufwand gegen Speicherplatz getauscht.
Abbildung des Wertebereichs
Die Zuordnung von einem Wert eines Wertebereichs zu einem Bitvektor geschieht durch die Wahl der Basis des Bitvektors. Wird jedem Wert des Wertebereichs eindeutig ein einziger Bitvektor zugeordnet, so entspricht die LΓ€nge des Bitvektors im einfachen Fall genau der KardinalitΓ€t des Wertebereichs und ist gleichzeitig Basis des Bitvektors. Ein Vorteil dieser Darstellung ist die MΓΆglichkeit, einzelne Werte eines Wertebereichs auszulassen, wenn diese nicht in vorliegenden Daten vorkommen. Weiterhin besteht die MΓΆglichkeit, eine nicht uniforme Basis anzugeben.
Literatur
β’ Chee-Yong Chan und Yannis Ioannidis: Bitmap Index Design and Evaluation. Proceedings of the 1998 ACM SIGMOD Conference.